Method and apparatus for improving data transfers in peer-to-peer networks

ABSTRACT

One embodiment of the present method and apparatus for improving data transfers in peer-to-peer networks includes receiving a search request message from a requesting node, where the search request message requests specific data. A responding node then sends a response message to the requesting node including a referral message comprising at least one referred node that is expected to have the requested data, based on knowledge of the referred node&#39;s previous incoming and outgoing data transfers. The responding node may also indicate that the responding node has the requested data. In addition to increasing the requesting node&#39;s view of the peer-to-peer network, this also enables the identification of nodes (e.g., referred nodes) with which the requesting node may wish to establish direct peer-to-peer connections, e.g., to build peer-to-peer communities of nodes having similar interests.

BACKGROUND

The present invention relates generally to computing networks andrelates more particularly to the expansion of peer-to-peer data transfernetworks.

FIG. 1 is a schematic diagram of a network 100 of nodes (e.g., computingdevices) interacting in a peer-to-peer (P2P) manner. Generally, arequesting node 101 sends a search message 105 (e.g., containingkeywords relating to data that the requesting node 101 wishes to locate)to at least one intermediate node 111 in communication with therequesting node 101 via a peer connection. The intermediate node 111receives the search message 105 and forwards the search message 105 toat least one additional node 111. Eventually, the search message 105reaches at least one responding node 103 having the requested data (insome cases, the first intermediate node 111 to which the search message105 is forwarded will also be a responding node 103). At least oneresponding node 103 then sends a response message 107 back to therequesting node 101, e.g., via the intermediate nodes 111. Therequesting node 101 then requests the relevant data from a respondingnode 103 by connecting directly to the responding node 103, e.g., viadirect connection 109.

In conventional P2P systems, messages including the search message 105have a limited time to live or hop count. That is, a message will expireonce it has been forwarded to a predefined maximum number of nodes 101,103 or 111. Thus, if the requesting node 101 generates a search messagehaving a time to live of four, and a node at which the requested dataresides (e.g., node 113) is more than four “hops” away from therequesting node 101, the search message will expire before the requesteddata is obtained. Typical methods for increasing the possibility of thesearch message reaching a node having the requested data thus includeincreasing the search message's time to live or increasing the number ofpeer connections per node; however, either method will cause an increasein network traffic.

Similar methods that may decrease download time include allowingselective downloads (by which a requesting node downloads the same datafrom multiple responding nodes at different offsets, thereby shorteningdownload time), or to allow a requesting node to partner with one ormore other peer nodes currently downloading the requested data. However,these methods do not increase the “view” of a node in the P2P network(e.g., by enabling search requests from the node to reach nodes furtherinto the P2P network), nor do these methods enable the building of P2Pcommunities of users having similar interests, which can increase thelikelihood of searches finding desired content in the P2P network.

Thus, there is a need in the art for a method and apparatus forimproving data transfers in P2P networks.

SUMMARY OF THE INVENTION

One embodiment of the present method and apparatus for improving datatransfers in peer-to-peer networks includes receiving a search requestmessage from a requesting node, where the search request messagerequests specific data. A responding node then sends a response messageto the requesting node including a referral message comprising at leastone referred node that is expected to have the requested data, based onknowledge of the referred node's previous incoming and outgoing datatransfers. The responding node may also indicate that the respondingnode has the requested data. In addition to increasing the requestingnode's view of the peer-to-peer network, this also enables theidentification of nodes (e.g., referred nodes) with which the requestingnode may wish to establish direct peer-to-peer connections, e.g., tobuild peer-to-peer communities of nodes having similar interests.

BRIEF DESCRIPTION OF THE DRAWINGS

So that the manner in which the above recited embodiments of theinvention are attained and can be understood in detail, a moreparticular description of the invention, briefly summarized above, maybe obtained by reference to the embodiments thereof which areillustrated in the appended drawings. It is to be noted, however, thatthe appended drawings illustrate only typical embodiments of thisinvention and are therefore not to be considered limiting of its scope,for the invention may admit to other equally effective embodiments.

FIG. 1 is a schematic diagram of a network of nodes interacting in apeer-to-peer manner;

FIG. 2 is a flow diagram illustrating one embodiment of a method forreferring out-of-range nodes in a P2P network, such as the networkillustrated in FIG. 1;

FIG. 3 is a flow diagram illustrating one embodiment of a method forbuilding communities in a P2P network, such as the network illustratedin FIG. 1; and

FIG. 4 is a high level block diagram of the network expansion methodthat is implemented using a general purpose computing device.

To facilitate understanding, identical reference numerals have beenused, where possible, to designate identical elements that are common tothe figures.

DETAILED DESCRIPTION

In one embodiment, the present invention is a method and apparatus forimproving data transfers in P2P networks. Embodiments of the presentinvention make it possible for a requesting node on a P2P network toreceive data from nodes that would normally be outside of the requestingnode's “range” by enabling the referral, by intermediate nodes, of theout-of-range nodes. This capability further facilitates the building of“communities” within the P2P network, where a “community” in the contextof the present invention is a subset of nodes in a P2P network thatshare common interests and/or data, e.g., over direct peer connections.

For the purposes of the present invention, the term “node” refers to acomputing device such as a personal computing device (e.g., a desk topcomputer, a laptop computer, a cellular telephone, a personal digitalassistant, etc.), a server, a router or the like that is connected to aP2P network.

FIG. 2 is a flow diagram illustrating one embodiment of a method 200 forreferring out-of-range nodes in a P2P network, such as the network 100illustrated in FIG. 1. The method 200 may be implemented at, forexample, any node (e.g., 101, 103, 111 or 113) on the P2P network 100.The method 200 is initialized at step 202 and proceeds to step 204,where the method 200 receives a search request message, e.g., from apeer (connected) node.

The method 200 then proceeds to step 206, where the method 200 examinesthe search request message and determines whether the receiver (e.g.,the node at which the search request message was received in step 204)has the requested data. If the receiver has the requested data, themethod 200 proceeds to step 208 and sends a response message over thenetwork 100 back to the requesting node, e.g., in accordance withconventional P2P protocols. The response message indicates that thereceiver has the requested data.

In one embodiment, the response message sent in step 208 furtherincludes a referral message comprising at least one referred node, wherea “referred node” is another node in the P2P network that has previouslyretrieved the requested data. In one embodiment, the referral message isincluded in the response message. In another embodiment, the referralmessage is a separate message sent to the requesting node. In yetanother embodiment, the referral message is piggybacked on the responsemessage. In one embodiment, the referred nodes are nodes that haveretrieved the requested data directly from the receiver. The referralmessage may include, for example, at least one of the hostnames, IPaddresses, virtual names and other identifiers of the referred nodes.

In one embodiment, the referral message may be time-sensitive such thatit includes only nodes that have retrieved the requested content withina predefined maximum timeframe (e.g., within the last 24 hours, etc.).This predefined maximum timeframe may be specified in the search requestmessage (e.g., “refer only nodes that have requested the data within thepast 24 hours”), or the predefined maximum timeframe may be specified atthe receiver. The assumption is that if a referred node has recently(e.g., within the predefined maximum timeframe) retrieved the requesteddata, the referred node will likely still have the requested dataavailable to share.

In yet another embodiment, the referral message may be sorted or rankedbased on at least one of: uptime for the referred nodes, bandwidth ofthe referred nodes and latency of the referred nodes.

In one embodiment, the method 200 sends a referral message based on athreshold distance that the search request message has traveled in thenetwork. For example, in one embodiment, the method 200 only sends areferral message if the search request message's time to live hasexpired (e.g., the receiver is an edge node in the requesting node'sview of the P2P network). In another embodiment, the method 200 onlysends a referral message if the search request message's time to live isat least half expired. This threshold distance may be specified by therequesting node, the receiver, or both.

Alternatively, if the method 200 determines in step 206 that thereceiver does not have the requested data, the method 200 proceeds tostep 210 and inquires whether the receiver knows of another node that islikely to have the requested data (e.g., because the node has previouslydownloaded the requested data from another source as discussed above).If the receiver does know of another node that is likely to have therequested data, the method 200 proceeds to step 208 as described abovebut sends only a referral message, and not a response message. Thus,even if the receiver does not have the requested data, the receiver maystill be able to refer the requesting node to one or more other nodesthat are likely to have the requested data.

However, if the receiver does not have the requested data and does notknow of another node that is likely to have the requested data, themethod 200 proceeds to step 212 and either forwards the search requestmessage to the next node (e.g., in accordance with conventional P2Pprotocols) or discards the search request message (e.g., if the searchmessage's time to live or hop count has expired).

The method 200 terminates in step 214. Based on the requesting node'sevaluation of the response message, including the referral message, thereceiver may be contacted by the requesting node for at least a portionof the requested data (if the method 200 has indicated that the receiverhas the data).

The method 200 as described above enables the view of a node in a P2Pnetwork to be expanded while only minimally increasing network traffic.By enabling one or more nodes in a P2P network to “refer” out-of-rangenodes to a requesting node, the view of the requesting node can beexpanded despite the requesting node's inherently limited range. Thefarther away a receiver/responding node is in hops from the requestingnode, the smaller the intersection is between the requesting node andthe receiver/responding node, and the larger the expanded view of theP2P is likely to therefore be. Thus, unlike conventional P2P expansionmethods that tend to result in a sometimes exponential increase innetwork traffic (e.g., by increasing either a search request message'stime to live or a node's number of peer connections), the method 200actually conserves traffic while at the same time “expanding” thenetwork. In addition, response latency is typically reduced as arequesting node can select faster nodes which can provide more data thannodes on slower links.

Those skilled in the art will appreciate that a node may periodicallyupdate its referral message, for example based on one or more testsearches. For example, a node may send a test search message to one ormore nodes identified in its referral message, in order to determinethat the nodes identified in the referral message still have theindicated data. If a node identified in the referral message no longerhas the indicated data, it can be removed from the referral message.Test searches may be performed periodically, e.g., based on anexpiration of a predefined period of time. In yet another embodiment, anode may remove a referred node from the referral message if the nodereceives a message from a requesting node (to which the referred nodehas been referred) indicating that the referred node no longer has theindicated data.

Moreover, by referring nodes that have or are likely to have therequested data, the method 200 facilitates the building of “communities”within the P2P by identifying out-of-range nodes with potentiallysimilar interests (e.g., as inferred by the request for the same data).The existence of communities allows nodes with similar interests todirectly communicate and exchange data, thereby reducing overall networktraffic (as search request messages sent through the community tend notto propagate as far into the P2P network as is typical with a normalsearch as described in connection with FIG. 1).

FIG. 3 is a flow diagram illustrating one embodiment of a method 300 forbuilding communities in a P2P network, such as the network 100illustrated in FIG. 1. The method 300 may be implemented at, forexample, any node (e.g., 101, 103, 111 or 113) on the P2P network 100.The method 300 is initialized at step 302 and proceeds to step 304,where the method 300 sends a search request message, e.g., to one ormore peer nodes.

In step 306, the method 300 receives at least one response messageresponsive to the search request message sent in step 304. The responsemessage includes at least one referred node, e.g., as described withreference to the method 200. In one embodiment, the response message mayalso include an indication that the responding node has the requesteddata, e.g., in accordance with traditional P2P protocols. The method 300may collate multiple response messages received from multiple respondingnodes to create an aggregate list of potential sources for the requesteddata.

Once the method 300 has received the response message, the method 300proceeds to step 308 and retrieves at least a portion of the requesteddata from at least one of the responding node and/or at least onereferred node listed in the referral message. In one embodiment, themethod 300 may choose which portions of the requested data to retrievefrom which responding and/or referred nodes, based on a collated list ofpotential sources for the requested data. In another embodiment, therequesting node may identify one or more preferred nodes for searching,based on the information received in step 306.

In step 310, the method 300 creates a direct peer connection to at leastone of the referred nodes, e.g., to admit the referred node into or tocreate a “community” or subset of nodes in the P2P network that sharecommon interests and/or data. In one embodiment, the referred node is amutually preferred node (e.g., preferred for searching). In oneembodiment, step 310 further includes terminating an existing peerconnection for every new peer connection that is created (e.g., toconserve network resources where each node in the P2P network is alloweda maximum number of peer connections). Thus, for example, referring backto FIG. 1, the method 300 may create a direct peer connection betweenthe requesting node 101 and the normally out-of-range node 113, whichhas the requested data, and may terminate the peer connection betweenthe requesting node 101 and the intermediate node 111 illustrated to theleft of the requesting node 101.

The method 300 is terminated in step 312.

FIG. 4 is a high level block diagram of the network expansion methodthat is implemented using a general purpose computing device 400. In oneembodiment, a general purpose computing device 400 comprises a processor402, a memory 404, a data transfer module 405 and various input/output(I/O) devices 406 such as a display, a keyboard, a mouse, a modem, andthe like. In one embodiment, at least one I/O device is a storage device(e.g., a disk drive, an optical disk drive, a floppy disk drive). Itshould be understood that the data transfer module 405 can beimplemented as a physical device or subsystem that is coupled to aprocessor through a communication channel.

Alternatively, the data transfer module 405 can be represented by one ormore software applications (or even a combination of software andhardware, e.g., using Application Specific Integrated Circuits (ASIC)),where the software is loaded from a storage medium (e.g., I/O devices406) and operated by the processor 402 in the memory 404 of the generalpurpose computing device 400. Thus, in one embodiment, the data transfermodule 405 for expanding a P2P network and building P2P communitiesdescribed herein with reference to the preceding Figures can be storedon a computer readable medium or carrier (e.g., RAM, magnetic or opticaldrive or diskette, and the like).

Thus, the present invention represents a significant advancement in thefield of data transfer networks. A method and apparatus are providedthat make it possible for a requesting node on a P2P network to receivedata from nodes that would normally be outside of the requesting node's“range” by enabling the referral, by intermediate nodes, of theout-of-range nodes. This capability further facilitates the building of“communities” within the P2P network, enabling faster, more efficientdata transfers and reducing network traffic.

While foregoing is directed to the preferred embodiment of the presentinvention, other and further embodiments of the invention may be devisedwithout departing from the basic scope thereof, and the scope thereof isdetermined by the claims that follow.

1. A method for transferring data between nodes in a network, saidmethod comprising: receiving, by a first node, a search request messagefrom a second node, said search request message requesting data; andsending, by said first node, a response message to said second node,said response message including a referral message identifying at leastone third node that is expected to have said requested data.
 2. Themethod of claim 1, wherein said response message further indicates thatsaid first node has said requested data.
 3. The method of claim 1,wherein said at least one third node is a node that has retrieved saidrequested data from said first node.
 4. The method of claim 1, whereinsaid referral message includes at least one of: said at least one thirdnode's hostname, said at least one third node's IP address and said atleast one third node's virtual name.
 5. The method of claim 1, whereinsaid at least one third node has retrieved said requested data within apredefined maximum timeframe.
 6. The method of claim 5, where saidpredefined maximum timeframe is defined by at least one of: said firstnode and said second node.
 7. The method of claim 1, wherein saidreferral message is sent if said search request message has traveled atleast a threshold distance into said network.
 8. The method of claim 7,wherein said threshold distance is defined by at least one of: saidfirst node and said second node.
 9. The method of claim 1, furthercomprising: updating said referral message to remove at least one thirdnode if said at least one third node no longer has said requested data.10. The method of claim 9, wherein said updating further comprises:sending, by said first node, a test search message to said at least onethird node, to determine whether said third node still has saidrequested data.
 11. The method of claim 9, wherein said updating furthercomprises: receiving, from said second node, a message indicating thatsaid at least one third node no longer has said requested data.
 12. Themethod of claim 1, wherein said referral message is ranked based on atleast one of: uptime of said at least one third node, bandwidth of saidat least one third node and latency of said at least one third node. 13.A computer readable medium containing an executable program fortransferring data between nodes in a network, where the program performsthe steps of: receiving, by a first node, a search request message froma second node, said search request message requesting data; and sending,by said first node, a response message to said second node, saidresponse message including a referral message identifying at least onethird node that is expected to have said requested data.
 14. Thecomputer readable medium of claim 13, wherein said response messagefurther indicates that said first node has said requested data.
 15. Thecomputer readable medium of claim 13, wherein said at least one thirdnode is a node that has retrieved said requested data from said firstnode.
 16. The computer readable medium of claim 13, wherein saidreferral message includes at least one of: said at least one thirdnode's hostname, said at least one third node's IP address and said atleast one third node's virtual name.
 17. The computer readable medium ofclaim 13, wherein said at least one third node has retrieved saidrequested data within a predefined maximum timeframe.
 18. The computerreadable medium of claim 17, where said predefined maximum timeframe isdefined by at least one of: said first node and said second node. 19.The computer readable medium of claim 13, wherein said referral messageis sent if said search request message has traveled at least a thresholddistance into said network.
 20. The computer readable medium of claim19, wherein said threshold distance is defined by at least one of: saidfirst node and said second node.
 21. The computer readable medium ofclaim 13, further comprising: updating said referral message to removeat least one third node if said at least one third node no longer hassaid requested data.
 22. The computer readable medium of claim 21,wherein said updating further comprises: sending, by said first node, atest search message to said at least one third node, to determinewhether said third node still has said requested data.
 23. The computerreadable medium of claim 21, wherein said updating further comprises:receiving, from said second node, a message indicating that said atleast one third node no longer has said requested data.
 24. The computerreadable medium of claim 13, wherein said referral message is rankedbased on at least one of: uptime of said at least one third node,bandwidth of said at least one third node and latency of said at leastone third node.
 25. Apparatus comprising: means for receiving, by afirst node, a search request message from a second node, said searchrequest message requesting data; and means for sending, by said firstnode, a response message to said second node, said response messageincluding a referral message identifying at least one third node that isexpected to have said requested data.
 26. A method for building acommunity of nodes having common interests in a network, said methodcomprising the steps of: sending, by a first node, a search requestmessage, said search request message requesting data; and receiving aresponse message from a second node, said response message including areferral message identifying at least one third node that is expected tohave said requested data.
 27. The method of claim 26, furthercomprising: admitting at least one of said at least one third node intosaid community.
 28. The method of claim 26, wherein said admittingcomprises: creating a new direct peer connection from a node in saidcommunity to said at least one of said at least one third node.
 29. Acomputer readable medium containing an executable program for building acommunity of nodes having common interests in a network, where theprogram performs the steps of: sending, by a first node, a searchrequest message, said search request message requesting data; andreceiving a response message from a second node, said response messageincluding a referral message identifying at least one third node that isexpected to have said requested data.
 30. Apparatus comprising: meansfor sending, by a first node, a search request message, said searchrequest message requesting data; and means for receiving a responsemessage from a second node, said response message including a referralmessage identifying at least one third node that is expected to havesaid requested data.